package com.itheima.exception;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@Component
@ControllerAdvice
public class ExceptionAdvice {

    /*业务异常处理*/
    //类中定义的方法携带@ExceptionHandler注解的会被作为异常处理器，后面添加实际处理的异常类型
    @ExceptionHandler(BusinessException.class)
    @ResponseBody
    public String doBusiness(Exception ex){
        //将异常的信息告知用户
        return ex.getMessage();
    }

    /*系统异常处理*/
    @ExceptionHandler(SystemException.class)   //处理自定义的系统异常
    @ResponseBody
    public String doSystem(Exception ex){
        //系统异常需要存起来 :文件, mysql, redis, 然后通知运维或开发人员
        return "系统正在维护, 请联系客服";
    }

    /*其他异常处理*/
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public String doException(Exception ex){
        return "系统正在维护, 请联系客服";
    }
}
